In regular expression matching, strings of data are searched for a particular pattern of data, called a regular expression or regex. The regex may be, for example, a word, words or pattern of characters. Regular expression matching can be used in a variety of applications such as, for example, searching for text patterns in a document or inspecting packets of information sent over a network to detect malicious code.
Regular expression matching, and many other types of operations, can be performed by dividing the operation into tasks that can be processed by multiple threads of execution. A thread of execution, or execution thread, is the smallest unit of processing that can be scheduled by an operating system. A process scheduler can be used to schedule execution threads to be processed in parallel. Parallel processing may be performed, for example, by parallel processing devices such as graphics processing units, vectorized central processing units and field programmable gate arrays programmed to perform parallel processing